home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / e / e_modules02.lha / e_modules02 / unpack / show.e < prev    next >
Encoding:
Text File  |  1996-07-19  |  3.1 KB  |  103 lines

  1. OPT OSVERSION=37
  2. OPT PREPROCESS,REG=5
  3.  
  4. /*
  5. *-- AutoRev header do NOT edit!
  6. *
  7. *   Project         :   Crunchery które unpack.library moûe rozpakowaê
  8. *   File            :   show.e
  9. *   Copyright       :   © 1996 Piotr Gapiïski
  10. *   Author          :   Piotr Gapiïski
  11. *   Creation Date   :   13.07.96
  12. *   Current version :   2.0
  13. *   Translator      :   AmigaE v3.2e
  14. *
  15. *   REVISION HISTORY
  16. *
  17. *   Date       Version  Comment
  18. *   ---------  -------  ----------------------------------------------------
  19. *   04.01.96   1.0      first release (with nice easygui.m gui)
  20. *   25.04.96   1.0.1    lepsze zarzâdzanie pamiëciâ
  21. *   13.07.96   2.0      poprawione zarzâdzanie pamiëciâ (mempools)
  22. *
  23. *-- REV_END --*
  24. */
  25.  
  26. MODULE 'exec/lists','exec/nodes','exec/memory',
  27.        'intuition/screens','intuition/intuition',
  28.        'utility/tagitem',
  29.        'libraries/unpack','unpack',
  30.        'tools/easygui','tools/constructors'
  31. MODULE 'tools/mempools'
  32.  
  33. #define PROGRAMVERSION '$VER: show 2.0 (13.07.96)'
  34.  
  35. #define MSG_CLI_WRONGKICK     'Require OS v37+ !\n'
  36. #define MSG_CLI_NOUNPACKERLIB 'Couldn\at open unpacker.library v39+ !\n'
  37. #define MSG_CLI_NOMEM         'No free memory!\n'
  38. #define MSG_TITLE_HAIL        'Crunchers the unpack.library can unpack'
  39. #define MSG_TITLE_WINDOW      'unpack.library'
  40.  
  41. CONST PUDDLESIZE = 1024 * 20
  42. CONST TRESHSIZE  = PUDDLESIZE
  43.  
  44. PROC main() HANDLE
  45.   DEF pool=NIL:PTR TO pool,
  46.       info=NIL:PTR TO unpackinfo
  47.   DEF gh=NIL:PTR TO guihandle,listgad,res=-1
  48.   DEF list=NIL:PTR TO lh,node:PTR TO ln,name,str:PTR TO CHAR
  49.   DEF done,scr=NIL:PTR TO screen
  50.  
  51.   IF KickVersion(37)=FALSE THEN Raise(MSG_CLI_WRONGKICK)
  52.   IF (unpackbase:=OpenLibrary(UNPACKNAME,39))=NIL THEN Raise (MSG_CLI_NOUNPACKERLIB)
  53.   IF (info:=UpAllocCInfo())=NIL THEN Raise(MSG_CLI_NOMEM)
  54.   IF (pool:=libCreatePool(MEMF_ANY OR MEMF_CLEAR,PUDDLESIZE,
  55.                           TRESHSIZE))=NIL THEN Raise(MSG_CLI_NOMEM)
  56.  
  57.   scr:=LockPubScreen(NIL)
  58.   gh:=guiinit(MSG_TITLE_WINDOW,
  59.     [EQROWS,
  60.       [BEVEL,
  61.         [TEXT,MSG_TITLE_HAIL,NIL,FALSE,3]
  62.       ],
  63.       listgad:=[LISTV,{dummy},NIL,20,17,list,TRUE,0,0]
  64.     ])
  65.   IF gh<>NIL THEN gh.wnd.flags:=gh.wnd.flags OR WFLG_RMBTRAP
  66.   SetWindowPointerA(gh.wnd,[WA_BUSYPOINTER,TRUE,TAG_DONE])
  67.   SetWindowTitles(gh.wnd,-1,PROGRAMVERSION)
  68.   list:=newlist()
  69.   name:=UpUnpackList(info)
  70.   REPEAT
  71.     done:=UpUnpackListNext(info)
  72.     MOVE.L A1,name
  73.     IF name
  74.       node:=libAllocPooled(pool,SIZEOF ln)
  75.       str:=libAllocPooled(pool,StrLen(name)+1)
  76.       IF node=NIL OR str=NIL THEN Raise(MSG_CLI_NOMEM)
  77.       AstrCopy(str,name)
  78.       node.name:=str
  79.       setlistvlabels(gh,listgad,-1)
  80.       AddTail(list,node)
  81.       setlistvlabels(gh,listgad,list)
  82.     ENDIF
  83.   UNTIL done=0
  84.   SetWindowPointerA(gh.wnd,[TAG_DONE])
  85.  
  86.   WHILE res<0
  87.     Wait(gh.sig)
  88.     res:=guimessage(gh)
  89.   ENDWHILE
  90. EXCEPT DO
  91.   IF exception THEN WriteF(exception,
  92.                     IF exceptioninfo THEN exceptioninfo ELSE NIL)
  93.   IF gh THEN cleangui(gh)
  94.   IF scr THEN UnlockPubScreen(NIL,scr)
  95.   IF info THEN UpFreeCInfo(info)
  96.   IF pool THEN libDeletePool(pool)
  97.   END list
  98.   IF unpackbase THEN CloseLibrary(unpackbase)
  99. ENDPROC
  100.  
  101. PROC dummy() IS EMPTY
  102. CHAR PROGRAMVERSION,0
  103.